The field of the invention is data processing, and more specifically relates to accessing a platform independent input method editor (“IME”) from an underlying operating system.
An IME is a software program which interprets user operations, such as typing keys, speaking, or writing using a pen device, to generate text input. For example, an IME may allow a user to type a sequence of keystrokes on a regular English (United States) keyboard to form complex characters found in languages such as Chinese, Japanese, or Korean. The IME uses a character encoding format to associate the user's keystrokes with a “code point”, and the code point with a formed character or “glyph” (i.e. the actual writing mark normally associated with the code point).
Over the years, many character encoding formats have been developed. One example is the American Standard Code for Information Interchange, commonly known as “ASCII.” ASCII allows characters to be represented by numbers. For example, if the encoding format is decimal, the glyph ‘A’ in ASCII corresponds to ‘65’. Other character encoding formats include “EBCDIC” (Extended Binary-Coded Decimal Interchange Code) developed by IBM, “CCITT” developed by the International Telegraph and Telephone Consultative Committee (now known as the International Telecommunication Union), and “ISO 8859-1” developed by the International Organization for Standardization.
More recently, the “Unicode” encoding format, developed by the Unicode Consortium, has been gaining wider acceptance. Unicode is touted as an “international” character encoding format with enough resolution to notionally provide a unique numeric value or code point for every character, independent of the platform, program, and language. Unicode has been widely adopted in Internet browsers, and is supported in modern platform independent programming languages, such as Java (discussed further below).
In the Unicode encoding system, each character receives a unique Unicode code point having a value in the hexadecimal range 000000 to 10FFFF. Thus, each Unicode code point may be expressed using 21 bits. (There are, however, several Unicode encoding format standards in use: UTF-8, UTF-16, and UTF-32. UTF-8 represents Unicode code points in “code units” of 8 bits. UTF-16 represents Unicode code points in code units of 16 bits. UTF-32 represents Unicode code points in code units of 32 bits. In UTF-32, each Unicode code point is stored in a single code unit.)
Readers interested in more detail regarding Unicode or multi-code unit Unicode encoding formats are directed to “The Unicode Standard, Version 3.0,” ISBN 0-201-61633-5, by the Unicode Consortium.
As known to those skilled in the art, Java is an object-oriented language able to express a software program in terms of objects (i.e., software bundles of related variables and methods), classes, inheritances, interfaces, and so on. In order to enable a Java application to execute on different types of data processing systems, a code compiler generates an architecture-neutral file format, and then the compiled code is executed on the data processing system within a Java Virtual Machine (“JVM”). With full support for Unicode, Java is well suited for developing platform independent, multilingual software programs, such as Java-based IMEs.
To interface with Java-based IMEs, a Java Input Method Framework (“IMF”) may be used. As known to those skilled in the art, the Java IMF provides a standard set of application user interfaces (“APIs”) for use in developing Java applications. For example, the Java IMF may be used to cooperate with the Java-based IME to provide a way to display a character composition to a user. In a first approach, the Java IMF may enable text editing components to display text in the context of the document that it will eventually belong to, but in a style, such as highlighted or underscored, that indicates that the text still needs to be converted or confirmed by the Java-based IME. This first approach is called “on-the-spot-editing”. In a second approach, the Java IMF may provide a separate window to display text for applications not equipped to deal with the text, until it is confirmed and officially handed over to the application. This second approach is called “root-window editing”.
Readers interested in more detail regarding Java-based IMEs and the Java IMF are directed to the “Input Method Framework Design Specification” published by Sun Microsystems, Inc.
Heretofore, IME developers have had to create both platform independent IMEs, and operating system specific versions of those IMEs, as required. It would be desirable to provide a more efficient solution.